package leetcode; /**
 * description:
 * author:张腾
 * date:2021-07-07
 */

/**
 * 给你一个整数数组 nums ，请你找出数组中乘积最大的连续子数组（该子数组中至少包含一个数字），并返回该子数组所对应的乘积。
 */
public class leetcode152 {
    public int maxProduct(int[] nums) {
        if (nums.length==0 || nums==null) return 0;
        int ans = nums[0];
        int iMax = nums[0], iMin = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (nums[i]<0){
                int tmp = iMax;
                iMax = iMin;
                iMin = tmp;
            }
            iMax = Math.max(iMax*nums[i],nums[i]);
            iMin = Math.min(iMin*nums[i],nums[i]);

            ans = Math.max(ans,iMax);
        }
        return ans;
    }
}
